#ifndef TEMPLATECOMPILER_H_
#define TEMPLATECOMPILER_H_

#include <iostream>
#include <string>
#include <set>


using namespace std;

namespace phnq
{
	namespace phnqlets
	{
		class Tag;
		class Phnqlet;
	
		struct compile_result
		{
			string objectCode;
			struct
			{
				set<Tag*> tags;
				set<Phnqlet*> phnqlets;
			} deps;
		};
	
		class TemplateCompiler
		{
			public:
				static compile_result compile(const char *filename, const char *topClassName, Phnqlet *ctxPhnqlet=NULL);
		};
	}
}

#endif // TEMPLATECOMPILER_H_
